import { ref, computed } from 'vue'
import { defineStore } from 'pinia'

// pinia没有mutations 和 modules
// couter是定义整个store的唯一id，vuex是使用不同的模块做区分。pinia是使用单一store，每个store都需要唯一的一个id，类似vuex的命名空间

// defineStore 创建一个store实例，'counter'是这个store的id。


// 1 第一种写法，第二个参数是一个工厂函数。
// export const useCounterStore = defineStore('counter', () => {
//   const count = ref(0)//state
//   const a = ref(1);

//   const doubleCount = computed(() => count.value * 2)//getters

//   // actions
//   function increment() {
//     count.value++
//   }

//   return { count, a, doubleCount, increment }
// })


// 2 第二种写法，第二个参数是一个对象。
// 对象内state--工厂函数，内部返回一个state对象。
// getters---每个属性都是一个工厂函数，内部返回state.xxx
// actions---许多个函数，函数内用this.xxx
export const useCounterStore = defineStore('counter', {
  state: () => {
    return {
      count: 1,
      a: 2,
    }
  },
  getters: {
    doubleCount: (state) => { return state.count * 2 }
  },
  actions: {
    increment() {
      this.count++
    }
  },
})